It's All Abount Complexity
『複雑さがすべて』
プログラマに必要なものは「創造的な頭脳」と「思考を整理する能力」である
ソフトウェアを書く上での限界は、「自分たちが作っているシステムを理解する能力」で決まる
「複雑さ」はこの「理解」を阻害する
「複雑さ」はコンポーネント間の依存関係が蓄積して生じる
「複雑さ」を軽減することがソフトウェア設計で最も重要である
優れたツールは次々に登場しているが限界がある
「複雑さ」を無くす(シンプルにする)しか無い
「複雑さ」を無くす2つの方法
コードをよりシンプルで分かりやすく
「複雑さ」をカプセル化する
モジュール設計
ソフトウェアを OOP のクラスのようなモジュールに分割する
他のモジュールの詳細を知らずに実装できる
ソフトウェア設計は継続的なプロセス
この点が物理的システムと異なる
ウォータフォールモデル では、設計がプログラムの初期に集中している
各フェーズの担当者が異なるケースも多い
大規模なソフトウェアシステムを、事前にすべて可視化するのは不可能
初期設計は問題が多数あり、その問題が顕在化するのは実装がすすんでからである
今日 ウォータフォールモデル はほとんど採用されず、アジャイル開発 のようなインクリメンタルアプローチ が採用されている
インクリメンタルアプローチ = 設計に終わりがない
開発者は常に設計のことを考える必要がある(継続的な再設計)
設計の改善する機会を伺う…など
設計で重要なのは「複雑さ」を軽減することなので、常に「複雑さ」を考えることが大切
#読書メモ #複雑さ